home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / TCP_IP / TNOS230S / KISSPOLL.C < prev    next >
C/C++ Source or Header  |  1997-08-18  |  1KB  |  66 lines

  1. /* Polled Kiss ala G8BPQ for JNOS
  2.  * Copyright 1993, Johan. K. Reinalda, WG7J
  3.  * Hereby placed in the public domain.
  4.  */
  5. #include "global.h"
  6. #include "slip.h"
  7. #include "devparam.h"
  8. #include "kisspoll.h"
  9.   
  10. #if !defined(_lint)
  11. static char rcsid[] OPTIONAL = "$Id: kisspoll.c,v 1.10 1997/08/19 01:19:22 root Exp root $";
  12. #endif
  13.  
  14. #ifdef POLLEDKISS
  15.   
  16. #define WAITTIME 165L
  17.   
  18. void
  19. kiss_poller (xdev, p1, p2)
  20. int xdev;
  21. void *p1;
  22. void *p2 OPTIONAL;
  23. {
  24. int i;
  25. long interval = (long)p1;
  26. struct mbuf *bp;
  27. struct iface *master,*iface;
  28. struct slip *sp = &Slip[xdev];
  29.   
  30.     /* The actual physical interface */
  31.     master = sp->kiss[0];
  32.   
  33.     for ( ; ; ) {
  34.         for (i = 0; i < 16; i++) {
  35.             if ((iface=sp->kiss[i]) == NULL)
  36.                 continue;
  37.   
  38.             /* Get buffer for the poll packet, and generate it */
  39.             if ((bp = alloc_mbuf (2)) == NULL)
  40.                 continue;
  41.             bp->data[0] = PARAM_POLL;
  42.             bp->data[0] |= (char)(i << 4);        /*lint !e701 */
  43.             bp->data[1] = bp->data[0];  /* The checksum */
  44.             bp->cnt = 2;
  45.   
  46.             if (iface->port)    {
  47.                 iface->rawsndcnt++;
  48.                 iface->lastsent = secclock();
  49.             }
  50.             /* slip_raw also increments sndrawcnt */
  51.             (void) slip_raw (master, bp);
  52.   
  53.             (void) kpause (WAITTIME);    /* give time to start sending frame */
  54.   
  55.             if (sp->rx) {
  56.                 /* if frame busy, wait for a full frame (max) */
  57.                 kalarm (interval);
  58.                 kwait (&sp->rx);
  59.             }
  60.         }
  61.     }
  62. }
  63.   
  64. #endif /* POLLEDKISS */
  65.   
  66.